sgdk
|
3D math engine. More...
Go to the source code of this file.
Classes | |
struct | Context3D |
struct | Transformation3D |
Typedefs | |
typedef Vect3D_f16 | Translation3D |
typedef Vect3D_f16 | Rotation3D |
Functions | |
void | M3D_reset () |
Reset math 3D engine (reset matrices and transformation parameters mainly). | |
void | M3D_setLightEnabled (u16 enabled) |
Enable or disable light transformation calculation. | |
u16 | M3D_getLightEnabled () |
Get light transformation calculation enabled flag. | |
void | M3D_setViewport (u16 w, u16 h) |
Set viewport dimension. | |
void | M3D_setCamDistance (fix16 value) |
Set camera scene distance. | |
void | M3D_setLightXYZ (fix16 x, fix16 y, fix16 z) |
Set light direction vector. | |
void | M3D_setLight (Vect3D_f16 *value) |
Set light direction vector. | |
void | M3D_resetTransform (Transformation3D *t) |
Reset the specified rotation object. | |
void | M3D_setTransform (Transformation3D *tr, Translation3D *t, Rotation3D *r) |
Set translation and rotation objects to the specified transformation object. | |
void | M3D_setTranslation (Transformation3D *t, fix16 x, fix16 y, fix16 z) |
Set translation parameters to the specified transformation object. | |
void | M3D_setRotation (Transformation3D *t, fix16 x, fix16 y, fix16 z) |
Set rotation parameters to the specified Transformation3D object. Be careful, value is not given in radiant. [-8..+8] range correspond to radian [-PI..+PI] range. | |
void | M3D_combineTransform (Transformation3D *left, Transformation3D *right, Transformation3D *result) |
Combine the specified right and left Transformation3D objects and store result in result . result cannot be the same transformation object as left or right. | |
void | M3D_combineTranslationLeft (Translation3D *left, Transformation3D *right, Transformation3D *result) |
Combine the specified left Translation3D and right Transformation3D and store result in result .right and result transformation object can be the same. | |
void | M3D_combineTranslationRight (Transformation3D *left, Translation3D *right, Transformation3D *result) |
Combine the specified left Transformation3D with right Translation3D and store result in result .left and result transformation object can be the same. | |
void | M3D_buildMat3D (Transformation3D *t) |
Build the transformation matrix of the specified Transformation3D object. This also rebuild cached informations as inverse transformation matrix, inverse camera view... | |
void | M3D_buildMat3DOnly (Transformation3D *t) |
Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild. | |
void | M3D_buildMat3DExtras (Transformation3D *t) |
Only rebuild the cached infos as inverse matrix, inverse camera view... | |
void | M3D_translate (Transformation3D *t, Vect3D_f16 *vertices, u16 numv) |
Process 3D translation only to specified 3D vertices buffer. | |
void | M3D_rotate (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv) |
Process 3D rotation only to specified 3D vertices buffer. | |
void | M3D_rotateInv (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest) |
Process 3D inverse rotation only to specified 3D vertex. | |
void | M3D_transform (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv) |
Process 3D transform (rotation and translation) to specified 3D vertices buffer. | |
void | M3D_project_f16 (const Vect3D_f16 *src, Vect2D_f16 *dest, u16 numv) |
Process 2D projection to specified 3D vertices buffer (fix16 version). | |
void | M3D_project_s16 (const Vect3D_f16 *src, Vect2D_s16 *dest, u16 numv) |
Process 2D projection to specified 3D vertices buffer (s16 version). |
3D math engine.
This unit provides 3D transformation methods :
void M3D_buildMat3D | ( | Transformation3D * | t | ) |
Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...
t | Transformation3D object. |
void M3D_buildMat3DExtras | ( | Transformation3D * | t | ) |
Only rebuild the cached infos as inverse matrix, inverse camera view...
t | Transformation object. |
void M3D_buildMat3DOnly | ( | Transformation3D * | t | ) |
Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.
t | Transformation object. |
void M3D_combineTransform | ( | Transformation3D * | left, |
Transformation3D * | right, | ||
Transformation3D * | result | ||
) |
Combine the specified right and left Transformation3D objects and store result in result
. result cannot be the same transformation object as left or right.
left | Left Transformation3D object. |
right | Right Transformation3D object. |
result | Result Transformation3D object. |
void M3D_combineTranslationLeft | ( | Translation3D * | left, |
Transformation3D * | right, | ||
Transformation3D * | result | ||
) |
Combine the specified left Translation3D and right Transformation3D and store result in result
.
right and result transformation object can be the same.
left | Left Transformation3D object. |
right | Right Transformation3D object. |
result | Result Transformation3D object. |
void M3D_combineTranslationRight | ( | Transformation3D * | left, |
Translation3D * | right, | ||
Transformation3D * | result | ||
) |
Combine the specified left Transformation3D with right Translation3D and store result in result
.
left and result transformation object can be the same.
left | Left Transformation3D object. |
right | Right Translation3D object. |
result | Result Transformation3D object. |
void M3D_project_f16 | ( | const Vect3D_f16 * | src, |
Vect2D_f16 * | dest, | ||
u16 | numv | ||
) |
Process 2D projection to specified 3D vertices buffer (fix16 version).
src | Source 3D vertices buffer. |
dest | Destination 2D vertices buffer - fix16 format |
numv | Number of vertices to project. |
void M3D_project_s16 | ( | const Vect3D_f16 * | src, |
Vect2D_s16 * | dest, | ||
u16 | numv | ||
) |
Process 2D projection to specified 3D vertices buffer (s16 version).
src | Source 3D vertices buffer. |
dest | Destination 2D vertices buffer - s16 format |
numv | Number of vertices to project. |
void M3D_rotate | ( | Transformation3D * | t, |
const Vect3D_f16 * | src, | ||
Vect3D_f16 * | dest, | ||
u16 | numv | ||
) |
Process 3D rotation only to specified 3D vertices buffer.
t | Transformation object containing rotation parameter. |
src | Source 3D vertices buffer. |
dest | Destination 3D vertices buffer. |
numv | Number of vertices to rotate. |
void M3D_rotateInv | ( | Transformation3D * | t, |
const Vect3D_f16 * | src, | ||
Vect3D_f16 * | dest | ||
) |
Process 3D inverse rotation only to specified 3D vertex.
t | Transformation object containing rotation parameter. |
src | Source 3D vertex. |
dest | Destination 3D vertex. |
void M3D_setCamDistance | ( | fix16 | value | ) |
Set camera scene distance.
value | Distance between the camera and the scene. |
void M3D_setViewport | ( | u16 | w, |
u16 | h | ||
) |
Set viewport dimension.
w | Viewport width (use BMP_WIDTH if you use 3D with software bitmap engine) |
h | Viewport height (use BMP_HEIGHT if you use 3D with software bitmap engine) |
void M3D_transform | ( | Transformation3D * | t, |
const Vect3D_f16 * | src, | ||
Vect3D_f16 * | dest, | ||
u16 | numv | ||
) |
Process 3D transform (rotation and translation) to specified 3D vertices buffer.
t | Transformation object containing rotation and translation parameters. |
src | Source 3D vertices buffer. |
dest | Destination 3D vertices buffer. |
numv | Number of vertices to transform. |
void M3D_translate | ( | Transformation3D * | t, |
Vect3D_f16 * | vertices, | ||
u16 | numv | ||
) |
Process 3D translation only to specified 3D vertices buffer.
t | Transformation object containing translation parameter. |
vertices | 3D vertices buffer to translate. |
numv | Number of vertices to translate. |